// "use client";

// import { uploadApi } from '@/constants';
// import { get, post, del } from '@/util/api';

// // 文件上传响应接口
// export interface UploadResponse {
//   url: string;
//   key: string;
//   filename: string;
//   size: number;
//   type: string;
//   width?: number;
//   height?: number;
//   createdAt: string;
// }

// // 文件列表项接口
// export interface FileItem {
//   id: number;
//   filename: string;
//   originalName: string;
//   size: number;
//   type: string;
//   url: string;
//   key: string;
//   width?: number;
//   height?: number;
//   category: string;
//   uploaderId?: number;
//   uploaderName?: string;
//   createdAt: string;
//   updatedAt: string;
// }

// // 文件列表响应接口
// export interface FileListResponse {
//   data: FileItem[];
//   total: number;
//   page: number;
//   pageSize: number;
// }

// // 上传配置接口
// export interface UploadConfig {
//   maxSize: number;
//   allowedTypes: string[];
//   allowedCategories: string[];
//   storagePath: string;
// }

// // 上传统计数据接口
// export interface UploadStats {
//   totalFiles: number;
//   totalSize: number;
//   dailyUploads: Array<{
//     date: string;
//     count: number;
//     size: number;
//   }>;
//   fileTypeDistribution: Array<{
//     type: string;
//     count: number;
//     size: number;
//     percentage: number;
//   }>;
//   categoryDistribution: Array<{
//     category: string;
//     count: number;
//     size: number;
//   }>;
//   recentUploads: FileItem[];
// }

// /**
//  * 上传管理服务类
//  * 封装所有上传相关的API调用
//  */
// class UploadService {
//   /**
//    * 上传图片
//    * @param file 图片文件
//    * @param category 文件分类
//    * @returns Promise<UploadResponse>
//    */
//   async uploadImage(file: File, category: string = 'images'): Promise<UploadResponse> {
//     try {
//       const formData = new FormData();
//       formData.append('file', file);
//       formData.append('category', category);
      
//       const response = await post(uploadApi.IMAGE, formData, {
//         headers: {
//           'Content-Type': 'multipart/form-data',
//         },
//       });
      
//       return response.data || response;
//     } catch (error) {
//       console.error('上传图片失败:', error);
//       throw error;
//     }
//   }

//   /**
//    * 上传文件
//    * @param file 文件
//    * @param category 文件分类
//    * @returns Promise<UploadResponse>
//    */
//   async uploadFile(file: File, category: string = 'files'): Promise<UploadResponse> {
//     try {
//       const formData = new FormData();
//       formData.append('file', file);
//       formData.append('category', category);
      
//       const response = await post(uploadApi.FILE, formData, {
//         headers: {
//           'Content-Type': 'multipart/form-data',
//         },
//       });
      
//       return response.data || response;
//     } catch (error) {
//       console.error('上传文件失败:', error);
//       throw error;
//     }
//   }

//   /**
//    * 批量上传图片
//    * @param files 图片文件数组
//    * @param category 文件分类
//    * @returns Promise<Array<{ file: File; response: UploadResponse; error?: any }>>
//    */
//   async batchUploadImages(files: File[], category: string = 'images'): Promise<Array<{ file: File; response?: UploadResponse; error?: any }>> {
//     const uploadPromises = files.map(async (file) => {
//       try {
//         const response = await this.uploadImage(file, category);
//         return { file, response };
//       } catch (error) {
//         return { file, error };
//       }
//     });
    
//     return Promise.all(uploadPromises);
//   }

//   /**
//    * 获取文件列表
//    * @param params 查询参数
//    * @returns Promise<FileListResponse>
//    */
//   async getFileList(params?: {
//     page?: number;
//     pageSize?: number;
//     keyword?: string;
//     category?: string;
//     type?: string;
//     startDate?: string;
//     endDate?: string;
//     orderBy?: 'createdAt' | 'size' | 'filename';
//     orderDirection?: 'asc' | 'desc';
//   }): Promise<FileListResponse> {
//     try {
//       const response = await get(uploadApi.LIST, params);
//       return response.data || response;
//     } catch (error) {
//       console.error('获取文件列表失败:', error);
//       throw error;
//     }
//   }

//   /**
//    * 删除文件
//    * @param id 文件ID
//    */
//   async deleteFile(id: number): Promise<void> {
//     try {
//       await del(uploadApi.DELETE(id));
//     } catch (error) {
//       console.error(`删除文件失败 (ID: ${id}):`, error);
//       throw error;
//     }
//   }

//   /**
//    * 批量删除文件
//    * @param ids 文件ID数组
//    * @returns Promise<{ success: number; failed: number }>
//    */
//   async batchDeleteFiles(ids: number[]): Promise<{ success: number; failed: number }> {
//     try {
//       const response = await del(uploadApi.BATCH_DELETE, { ids });
//       return response.data || response;
//     } catch (error) {
//       console.error('批量删除文件失败:', error);
//       throw error;
//     }
//   }

//   /**
//    * 获取上传配置
//    * @returns Promise<UploadConfig>
//    */
//   async getUploadConfig(): Promise<UploadConfig> {
//     try {
//       const response = await get(uploadApi.CONFIG);
//       return response.data || response;
//     } catch (error) {
//       console.error('获取上传配置失败:', error);
//       throw error;
//     }
//   }

//   /**
//    * 获取上传统计数据
//    * @param params 查询参数
//    * @returns Promise<UploadStats>
//    */
//   async getUploadStats(params?: {
//     startDate?: string;
//     endDate?: string;
//     limit?: number;
//   }): Promise<UploadStats> {
//     try {
//       const response = await get(uploadApi.STATS, params);
//       return response.data || response;
//     } catch (error) {
//       console.error('获取上传统计数据失败:', error);
//       throw error;
//     }
//   }

//   /**
//    * 清理过期文件
//    * @returns Promise<{ deleted: number; total: number }>
//    */
//   async cleanExpiredFiles(): Promise<{ deleted: number; total: number }> {
//     try {
//       const response = await del(uploadApi.CLEAN_EXPIRED);
//       return response.data || response;
//     } catch (error) {
//       console.error('清理过期文件失败:', error);
//       throw error;
//     }
//   }

//   /**
//    * 检查文件MD5是否已存在
//    * @param md5 文件MD5值
//    * @returns Promise<{ exists: boolean; url?: string }>
//    */
//   async checkFileExists(md5: string): Promise<{ exists: boolean; url?: string }> {
//     try {
//       const response = await get(uploadApi.CHECK_EXISTS, { md5 });
//       return response.data || response;
//     } catch (error) {
//       console.error('检查文件是否存在失败:', error);
//       throw error;
//     }
//   }

//   /**
//    * 生成临时访问链接
//    * @param fileKey 文件key
//    * @param expiresIn 过期时间（秒）
//    * @returns Promise<{ url: string; expiresAt: string }>
//    */
//   async generateTemporaryUrl(fileKey: string, expiresIn: number = 3600): Promise<{ url: string; expiresAt: string }> {
//     try {
//       const response = await post(uploadApi.TEMP_URL, { fileKey, expiresIn });
//       return response.data || response;
//     } catch (error) {
//       console.error('生成临时访问链接失败:', error);
//       throw error;
//     }
//   }
// }

// // 导出上传服务实例
// export const uploadService = new UploadService();
// export default uploadService;